package easy

import (
	. "GoLeetcode/common"
)

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
/*
时间复杂度:O(N) 总节点个数
空间复杂度:O(H) 树的高度
*/
func minDepth(root *TreeNode) int {
	if root == nil {
		return 0
	}
	leftDepth := minDepth(root.Left)
	rightDepth := minDepth(root.Right)

	// 要注意一点,当左右子树中,一个子树深度为0,另一个不为0时,则取不为0的深度
	depth := 0
	if leftDepth == 0 {
		depth = rightDepth
	} else if rightDepth == 0 {
		depth = leftDepth
	} else {
		depth = Min(leftDepth, rightDepth)
	}
	return 1 + depth
}
